package com.divemotor.ventarepuestosinternet.dao;

import java.util.Date;
import java.util.List;

import org.primefaces.model.SortOrder;

import com.divemotor.ventarepuestosinternet.model.Cotizacion;
import com.divemotor.ventarepuestosinternet.model.EstadoCotizacion;
import com.divemotor.ventarepuestosinternet.model.Sucursal;
import com.divemotor.ventarepuestosinternet.model.Supervisor;
import com.divemotor.ventarepuestosinternet.model.Usuario;
import com.divemotor.ventarepuestosinternet.model.Vendedor;

public interface CotizacionDAO {

	public Cotizacion guardar(Cotizacion cotizacion);

	public List<Cotizacion> buscar(Cotizacion cotizacion, Date fechaDesde,
			Date fechaHasta);

	public List<Cotizacion> listarPorUsuario(Usuario usuario);
	
	public Cotizacion obtenerPorId(Cotizacion cotizacion);
	public List<Cotizacion> listar();

	public List<Cotizacion> listarPorSupervisor(Supervisor supervisor);

	public List<EstadoCotizacion> obtenerEstadosCotizacionPorUsuarioSucursal(
			Usuario usuarioAutenticado);

	public List<Vendedor> obtenerVendedoresPorUsuarioSucursal(
			Usuario usuarioAutenticado);

	public List<Cotizacion> buscar(int first, int pageSize,
			SortOrder sortOrder, String sortField, Date fechaInicio,
			Date fechaFin, String numeroSolicitudBuscar,
			Integer idDepartamentoBuscar, Integer idProvinciaBuscar,
			Integer idDistritoBuscar, Integer idSucursalBuscar,
			Integer idEstadoCotizacionBuscar, Integer idVendedorBuscar, List<Sucursal> listaSucursalesPermitidas);

	public int cantidadCotizaciones(Date fechaInicio, Date fechaFin,
			String numeroSolicitudBuscar, Integer idDepartamentoBuscar,
			Integer idProvinciaBuscar, Integer idDistritoBuscar,
			Integer idSucursalBuscar, Integer idEstadoCotizacionBuscar,
			Integer idVendedorBuscar, List<Sucursal> listaSucursalesPermitidas);

	public int cantidadCotizaciones();

	public void actualizar(Cotizacion cotizacion);

}
